package com.dutbbs.adapter;

import java.util.List;
import java.util.Map;

import liu.z.R;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

/**
 * 目前项目中所有UI中ListView的数据适配器，
 * 对上面那行话表示不懂的同学可以百度下“适配器模式”
 * 简单的说：每个UI显示是对应的Activity控制的，Activity中会new一个ListViewBaseAdaper通过
 * ListViewBaseAdaper把原始数据转化成UI可以识别的数据类型
 * @author t
 *
 */
public class ListViewBaseAdaper extends BaseAdapter
{
    private int realFlag = 677; 
    private Context activityContext;
    /**
     * 原始数据，被项目中目前都是List<Map<String, String>>
     */
    List<Map<String, String>> itemList;

    public ListViewBaseAdaper(Context activityContext, List<Map<String, String>> paraItemList)
    {
        this.activityContext = activityContext;
        itemList = paraItemList;
    }
    
    public void setVisibility(int flag)
    {
        realFlag = flag;
    }

    @Override
    public int getCount()
    {
        return itemList.size();
    }

    @Override
    public Object getItem(int arg0)
    {
        return itemList.get(arg0);
    }

    @Override
    public long getItemId(int arg0)
    {
        return arg0;
    }

    /**
     * 重要的函数，UI绘制每个ListView的Item时会调用这个函数
     * @param position
     * @param convertView
     * @param arg2
     * @return
     */
    @Override
    public View getView(int position, View convertView, ViewGroup arg2)
    {
        // 如果 convertView为null说明是最开始一次绘制listview，需要实例化一个item
        // 如果不为null则表示是listview在滚动的时候最上面被滚过去的item回收利用的
        if (convertView == null)
        {
            // inflater是layOUt加载器
            LayoutInflater inflater = (LayoutInflater) activityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listviewitem, null);
        } 
        // 下面设置item的数据，每个item只需设置其中两个的textview数据即可
        Map<String,String> dataMap = itemList.get(position);
        TextView title = (TextView) convertView.findViewById(R.id.title);
        title.setText(dataMap.get("title"));
        
        TextView info = (TextView) convertView.findViewById(R.id.info);
        if (realFlag!=677)
        {
            info.setVisibility(realFlag);
        }
        info.setText(dataMap.get("info"));
        

        // 第一个item为上圆角的背景图片，最后一个为下圆角的，其他的为长方形的（无圆角）
        if(position == 0)
        {
            Drawable bg = activityContext.getResources().getDrawable(R.drawable.list_above);
            convertView.setBackgroundDrawable(bg);
        }
        else if(position == itemList.size()-1)
        {
            Drawable bg = activityContext.getResources().getDrawable(R.drawable.list_below);
            convertView.setBackgroundDrawable(bg);
        }
        else 
        {
            Drawable bg = activityContext.getResources().getDrawable(R.drawable.list_mid_nor);
            convertView.setBackgroundDrawable(bg);
        }
        return convertView;
    }
}
